<template>
    <div>
        <el-card class="mb">
            <el-input placeholder="请输入关键词搜索" v-model="queryform.username" style="width: 200px;margin-right: 10px;">
            </el-input>
            <el-button type="primary" @click="search()" plain>查询</el-button>
            <el-button type="info" @click="research()" plain>重置</el-button>
            <el-button type="warning" style="float:right" @click="add()" plain>新增</el-button>
        </el-card>
        <el-card>
            <div class="table">
                <el-table :data="tableData" strip>
                    <el-table-column type="index" label="序号" width="70" align="center" sortable></el-table-column>
                    <el-table-column prop="username" label="用户名称"></el-table-column>

                    <el-table-column prop="type" label="用户角色">
                        <template slot-scope="scope">
                            <div v-if="scope.row.type == 1">管理员</div>
                            <div v-if="scope.row.type == 2">成果管理员</div>
                            <div v-if="scope.row.type == 3">教师</div>
                        </template>
                    </el-table-column>
                    <el-table-column prop="icon" label="头像">
                        <template slot-scope="scope">
                            <el-image style="width: 40px; height: 40px; border-radius: 50%" v-if="scope.row.icon"
                                :src="scope.row.icon" :preview-src-list="[scope.row.icon]"></el-image>

                        </template>

                    </el-table-column>

                    <el-table-column label="操作" align="center" width="350">
                        <template v-slot="scope">

                            <el-button size="mini" type="primary" plain @click="handleEdit(scope.row)">编辑</el-button>
                            <el-button size="mini" type="danger" plain @click="del(scope.row.id)">删除</el-button>
                        </template>
                    </el-table-column>
                </el-table>

                <div class="pagination">
                    <el-pagination background @current-change="handleCurrentChange" :current-page="queryform.current"
                        :page-sizes="[5, 10, 20]" :page-size="queryform.pageSize" layout="total, prev, pager, next"
                        :total="total">
                    </el-pagination>
                </div>
            </div>

        </el-card>

        <el-dialog title="权限管理" :visible.sync="fromVisible" width="40%" :close-on-click-modal="false" destroy-on-close>
            <el-form :model="form" label-width="100px" style="padding-right: 50px" :rules="rules" ref="formRef">


                <el-form-item label="用户名称" prop="gname">
                    <el-input v-model="form.username" placeholder="用户名称"></el-input>
                </el-form-item>

                <el-form-item label="头像" prop="gname">
                    <el-upload action="/oss" :headers="{ Authorization: 'Bearer ' + token }"
                        :on-success="handleFileSuccess">
                        <img v-if="this.form.icon" :src="this.form.icon" class="avatar">
                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                    </el-upload>
                </el-form-item>
                <el-form-item label="角色" prop="sex">
                    <el-select v-model="form.type" placeholder="角色">
                        <el-option label="系统管理员" :value="1"></el-option>
                        <el-option label="成果管理员" :value="2"></el-option>
                        <el-option label="老师" :value="3"></el-option>

                    </el-select>
                </el-form-item>
            </el-form>

            <div slot="footer" class="dialog-footer">
                <el-button @click="fromVisible = false">取 消</el-button>
                <el-button type="primary" @click="save">确 定</el-button>
            </div>
        </el-dialog>
        <el-dialog title="修改密码" :visible.sync="fromVisible1" width="40%" :close-on-click-modal="false" destroy-on-close>
            <el-form :model="form1" label-width="100px" style="padding-right: 50px" :rules="rules" ref="formRef">


                <el-form-item label="原密码" required>
                    <el-input v-model="form1.oldpassword" placeholder="原密码" show-password></el-input>
                </el-form-item>
                <el-form-item label="新密码" required>
                    <el-input v-model="form1.newpassword" show-password placeholder="新密码"></el-input>
                </el-form-item>
                <el-form-item label="确认密码" required>
                    <el-input v-model="form1.qrpasword" placeholder="确认密码" show-password></el-input>
                </el-form-item>


            </el-form>

            <div slot="footer" class="dialog-footer">
                <el-button @click="fromVisible1 = false">取 消</el-button>
                <el-button type="primary" @click="save1">确 定</el-button>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import service from '@/utils/request';
import E from 'wangeditor';
export default {
    data() {
        return {
            fileList: [],
            fromVisible1: false,
            form1: {},
            teacherlist: [],
            tableData: [],  // 所有的数据
            current: 1,   // 当前的页码
            pageSize: 10,  // 每页显示的个数
            total: 0,
            username: null,
            token: "",
            rolelist: [],
            name: null,
            fromVisible: false,
            avatar: "",
            queryform: {
                keyword: "",
                current: 1,
                tid: 0,
                pageSize: 10
            },
            license: "",
            form: {
                avatar: "",
                license: ""
            },
            user: {},
            rules: {
                cname: [
                    { required: true, message: '请输入名称', trigger: 'blur' },
                ],
            },
            ids: [],
            businessList: [],
            categoryList: [],
            hotellist: [],
            sjlist: [],
        }
    },
    mounted() {
        this.token = window.localStorage.getItem("token")

        console.log(this.user)

        this.getlist()
        if (this.user.role == 'ADMIN') {
            this.getall()
        }
    },
    methods: {
        jszy(row) {
            this.$router.push({
                path: "/system/jszy",
                query: {
                    id: row.id
                }
            })
        },
        async save1() {
            if (this.form1.newpassword == '' || !this.form1.newpassword) {
                return this.$message.warning("请输入新密码")

            }
            if (this.form1.qrpasword == '' || !this.form1.qrpasword) {
                return this.$message.warning("请输入确认密码")

            }
            if (this.form1.newpassword !== this.form1.qrpasword) {
                return this.$message.warning("两次输入密码不一致")
            }

            this.form1.password = this.form1.newpassword;
            this.form1.roleIds = [3]
            delete this.form1.oldpassword
            delete this.form1.newpassword
            delete this.form1.qrpasword;
            const res = await service.put("/sys/user", this.form1)
            if (res.code == 200) {
                this.fromVisible1 = false
                this.$message({
                    type: 'success',
                    message: '操作成功',
                    duration: 1000
                });

            }
        },
        czmm(row) {
            this.form1 = row
            this.fromVisible1 = true
        },
        initWangEditor(content) { //用户输入的文本作为参数传进函数。
            this.$nextTick(() => { //1.dom元素加载好后，先判断editor是否已经完成初始化，如果已经完成初始化，那么把editor销毁，清空。
                if (this.editor) {
                    this.editor.destroy();
                    this.editor = null;
                }
                this.editor = new E('#editor') //2.新建一个editor，赋值给我们一开始定义的editor，并渲染在iD为#editor的元素里
                this.editor.config.placeholder = '请输入内容' // 配置编辑器默认展示的文本
                this.editor.config.uploadFileName = 'file' //配置编辑器文件上传的名称
                this.editor.config.uploadImgServer = '/oss/editor'  //配置编辑器文件上传的接口
                this.editor.create() //执行创建编辑器
                console.log("12345")
                setTimeout(() => { //延时函数，这里没有设置延时时间，即为实时获取编辑器的文本给到this.editor.txt.html()。
                    this.editor.txt.html(content)
                })

            })
        },
        shenhe(id) {

        },
        async selectca(e) {
            console.log(e)
            // this.form.categoryId=""
            const res = await service.get("/hotal/typeByhotel?id=" + e);
            console.log(res)
            this.categoryList = res.data

        },
        selectcaf(e) {
            this.$forceUpdate()
        },
        handleFileSuccess(e) {
            this.form.icon = e.data
        },
        async getall() {
            const res = await service.get("/teacher/all");
            console.log(res)
            this.teacherlist = res.data
        },
        guidang(id) {
            this.$confirm('是否确认归档？, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(async () => {
                const res = await service.get("/subject/guidang?id=" + id)
                console.log(res)
                if (res.code == 200) {
                    this.$message({
                        type: 'success',
                        message: '归档成功!'
                    });
                    this.getlist()
                }

            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: '已取消删除'
                });
            });

        },
        del(id) {
            this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(async () => {
                const res = await service.delete("/sys/user/" + id)
                console.log(res)
                if (res.code == 200) {
                    this.$message({
                        type: 'success',
                        message: '删除成功!'
                    });
                    this.getlist()
                }

            }).catch(() => {
                this.$message({
                    type: 'info',
                    message: '已取消删除'
                });
            });
        },
        force(e) {
            this.form.timeRange = e;
            this.$forceUpdate();
        },
        handleEdit(row) {
            this.form = row;
            this.avatar = row.avatar

            this.form.type=Number(this.form.type)
            this.fromVisible = true
        },
        search() {
            this.queryform.current = 1;
            this.queryform.pageSize = 10;
            this.getlist()
        },
        research() {
            this.queryform.username = ""
            this.queryform.current = 1;
            this.queryform.pageSize = 10;
            this.getlist()

        },
        async getlist() {
            const res = await service.get("/sys/user/page", { params: this.queryform });
            console.log(res);
            if (res.code == 200) {
                this.tableData = res.data.records;
                this.total = res.data.total;
            }


        },
        add() {
            this.avatar = ""
            this.license = "";
            this.fileList = [];
            this.form = {
                icon: ""
            }
            this.fromVisible = true


        },
        handleLicenseSuccess(e) {

        },
        async save() {
          
            this.form.roleIds = [this.form.type]
            if (!this.form.id) {
                  this.form.password = "123456"
                const res = await service.post("/sys/user", this.form);
                if (res.code == 200) {
                    this.fromVisible = false
                    this.$message.success("操作成功")
                    this.getlist()
                }

            } else {
                delete this.form.password
                const res = await service.put("/sys/user", this.form);
                if (res.code == 200) {
                    this.fromVisible = false
                    this.$message.success("操作成功")
                    this.getlist()
                }

            }



        },
        handleCurrentChange(e) {

        },
        handleAvatarSuccess(e) {
            console.log(e)
            this.avatar = e.data;
            console.log(this.form.avatar)
        },
        handleAvatarSuccess1(e) {

            this.license = e.data;
        }
    }
}
</script>
<style scoped>
.mb {
    margin-bottom: 10px;
}
</style>
<style>
.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
}

.avatar-uploader .el-upload:hover {
    border-color: #409EFF;
}

.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px !important;
    text-align: center;
}

.avatar {
    width: 178px;
    height: 178px;
    display: block;
}
</style>